import Vue from 'vue'
import currency from 'currency.js'
import { notEmpty } from '@/utils'

const filters = {
  /**
   * 用于兼容酒店中心原来获取弹框标题( :title="row__.status | dialogTitle__" )的写法，
   * 不推荐，建议用:title="formTitle"(酒店有些页面写法有些特殊，直接)
   * @return {String}
   * @author: wang pingqi
   */  
  dialogTitle__ : value =>{
    const formTitleHash = {
      c: '新增',
      r: '查看',
      u: '编辑'
    }
    return formTitleHash[value]
  },
  // 数据字典转义
  $value2label: (value, options,keyword="dataValue/dataName") => {
    const keyList=keyword.split("/");
    return options?.filter(v => v[keyList[0]] == value)[0]?.[keyList[1]] ?? ''
  },
  // 分转元
  $cent2yuan: (value, config) => {
    if (notEmpty(value)) {
      const c = currency(value, {
        fromCents: true,
        useVedic: true,
        precision: 2,
        symbol: '',
        ...config,
      })
      let res = c.format()
      if (res.endsWith('.00')) {
        res = res.substring(0, res.length - 3)
      } else if (/\.[1-9]0$/.test(res)) {
        res = res.substring(0, res.length - 1)
      }
      return res
    }
    return value
  },
  // 元转分
  $yuan2cent: value =>
    notEmpty(value) ? currency(value).multiply(100).value : value
}

Object.keys(filters).map(filter => {
  Vue.filter(filter, filters[filter])
  // 同时注册为全局方法
  Object.defineProperty(Vue.prototype, filter, {
    value: filters[filter]
  })
})
